/*
 * Copyright (C) 拾光分享网 
 * All rights reserved, Designed By www.hiai.top.
 * Email：goodsking@163.com.
 * Version：V1.0.2(20230701).
 */
package top.hiai.config;

import com.jfinal.aop.Before;
import com.jfinal.core.Controller;
import com.jfinal.ext.interceptor.NotAction;

import top.hiai.common.model.User;
import top.hiai.login.LoginService;

/**
 * @Author www.hiai.top
 * @Email goodsking@163.com
 * @Message 更多资源尽在www.hiai.top
 * @Introduction 类的介绍:基础控制类，后面的控制全部继承这个类，方便后面的操作
 */

@SuppressWarnings("deprecation")
public class BaseController extends Controller {
    /**
     * 前台每页的数量
     */
    public static final int limtCount = 10;
    private User loginAccount = null;

    @Before(NotAction.class)
    public User getLoginAccount() {
        if (loginAccount == null) {
            loginAccount = getAttr(LoginService.loginAccountCacheName);
            if (loginAccount != null && loginAccount.isStatusLockId()) {
                throw new IllegalStateException("当前用户状态不允许登录，status = " + loginAccount.getStatus());
            }
        }
        return loginAccount;
    }

    @Before(NotAction.class)
    public boolean isLogin() {
        return getLoginAccount() != null;
    }

    @Before(NotAction.class)
    public boolean notLogin() {
        return !isLogin();
    }

    /**
     * 获取登录账户id
     * 确保在 FrontAuthInterceptor 之下使用，或者 isLogin() 为 true 时使用
     * 也即确定已经是在登录后才可调用
     */
    @Before(NotAction.class)
    public int getLoginAccountId() {
        return getLoginAccount().getUid();
    }

}